package com.example.starter;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;

/**
 * vertx 以事件为驱动
 *
 *
 *
 * @author leonard
 * @Date 2022-4-13
 */
public class MainVerticle extends AbstractVerticle {

  @Override
  public void start(Promise<Void> startPromise) throws Exception {
    //事件驱动之：服务器每次收到一个HTTP请求时这个处理器将被调用
    vertx.createHttpServer().requestHandler(req -> {
      req.response()
        .putHeader("content-type", "text/plain")
        .end("Hello from Vert.x!");
    }).listen(8888, http -> {
      //立即提供结果的API会立即返回，否则您需要提供一个处理器（Handler） 来接收稍后回调的事件
      //以这种方式进行异步操作，就是进行回调监听
      if (http.succeeded()) {
        startPromise.complete();
        System.out.println("HTTP server started on port 8888");
      } else {
        startPromise.fail(http.cause());
      }
    });
  }
}
